package bean;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;

import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;
import javax.faces.event.AjaxBehaviorEvent;
import javax.faces.model.SelectItem;

import com.sun.org.apache.xpath.internal.functions.FuncUnparsedEntityURI;

import dao.EspecialidadesDAO;
import dao.FuncionarioDAO;

import model.Especialidade;
import model.Funcionario;

@ManagedBean(name= "funcionarioBean")
@ViewScoped
public class FuncionarioBean implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private Funcionario funcionario;
	private Especialidade espe;
	private List<Funcionario> funcionarios;
	private String especialidade;
	private List<Especialidade> especialidades;
	private String auxiliar;

	public FuncionarioBean() {
		this.funcionario = new Funcionario();
	}

	@PostConstruct
	public void init() {
		EspecialidadesDAO dao = new EspecialidadesDAO();
		this.especialidades = dao.selectAll();
		FuncionarioDAO funcdao = new FuncionarioDAO();
		this.funcionarios = funcdao.selectAll();
	}

	public String getAuxiliar() {
		return auxiliar;
	}

	public void setAuxiliar(String auxiliar) {
		this.auxiliar = auxiliar;
	}

	public List<Funcionario> getFuncionarios() {
		return funcionarios;
	}

	public void setFuncionarios(List<Funcionario> funcionarios) {
		this.funcionarios = funcionarios;
	}

	public void setEspecialidade(String especialidade) {
		this.especialidade = especialidade;
	}

	public Funcionario getFuncionario() {
		return funcionario;
	}

	public void setFuncionario(Funcionario funcionario) {
		this.funcionario = funcionario;
	}

	public List<Especialidade> getEspecialidades() {
		return especialidades;
	}

	public void setEspecialidades(List<Especialidade> especialidades) {
		EspecialidadesDAO dao = new EspecialidadesDAO();
		this.especialidades = dao.selectAll();
	}

	public String getEspecialidade() {
		return especialidade;
	}

	public Especialidade getEspe() {
		return espe;
	}

	public void setEspe(Especialidade espe) {
		this.espe = espe;
	}

	public void adicionaFuncionario(ActionEvent actionEvent) {
		workaroundComboBox();

		FuncionarioDAO dao = new FuncionarioDAO();
		dao.insert(this.funcionario);
		System.out.println("ok");
	}
	
	// Workaround combo box
	private void workaroundComboBox() {
		for (Especialidade e : especialidades) {
			if (e.toString().equals(especialidade)) {
				this.setEspe(e);
			}
		}
		// que feio!
		especialidades.clear();
		especialidades.add(this.getEspe());
		this.funcionario.setLista(especialidades);
	}
	
	public void mostra(ActionEvent actionEvent){
		if(this.funcionario != null){
			System.out.println("maooe " + this.funcionario.getNome());
		}else{
			System.out.println("ta nulo fera");
		}
		
		
	}
	public Funcionario getFuncById(String id){
				setFuncionario(funcionarios.get(Integer.parseInt(id)));
				return getFuncionario();
	}
}
